import request from "@/utils/request"

import type {
    HasSpuResponseData,
    AllTradeMark,
    SpuHasImg,
    SaleAttrResponseData,
    HasSaleAttrResponseData,
    SpuData,
    SkuData,
    SkuInfoData
} from "./type"

enum API {
    // 本地服务
    SPULIST_URL = '/spu/',

    // 获取已有SPU数据
    HASSPU_URL = '/admin/product/',
    // 获取全部品牌数据
    ALLTRADEMARK_URL = '/admin/product/baseTrademark/getTrademarkList',
    // 获取某个SPU下的全部售卖商品图片数据
    IMAGE_URL = '/admin/product/spuImageList/',
    // 获取某一个SPU下全部的已有的销售属性地址
    SPUHASSALEATTR_URL = '/admin/product/spuSaleAttrList/',
    // 获取整个项目全部的销售属性
    ALLSALEATTR_URL = '/admin/product/baseSaleAttrList',
    // 添加新的SPU
    ADDSPU_URL = '/admin/product/saveSpuInfo',
    // 更新已有的SPU
    UPDATESPU_URL = '/admin/product/updateSpuInfo',
    //追加一个新增的SKU地址
    ADDSKU_URL = '/admin/product/saveSkuInfo',
    //查看某一个已有的SPU下全部售卖的商品
    SKUINFO_URL = '/admin/product/findBySpuId/',
    //删除已有的SPU
    REMOVESPU_URL = '/admin/product/deleteSpu/',
}

// 获取某一个三级分类下已有的SPU数据
export const reqHasSpu = (page: number, limit: number, category3Id: string | number) => {
    // return console.log(API.HASSPU_URL + `${page}/${limit}?category3Id=${category3Id}`)
    return request.get<any, HasSpuResponseData>(API.SPULIST_URL + `${page}/${limit}?category3Id=${category3Id}`)
}
// 获取全部的SPU的品牌数据
export const reqAllTradeMark = () => {
    return request.get<any, AllTradeMark>(API.ALLTRADEMARK_URL)
}
// 获取某一个已有的SPU下的全部商品的图片地址
export const reqSpuImageList = (spuId: number) => {
    return request.get<any, SpuHasImg>(API.IMAGE_URL + spuId)
}
// 获取某一个已有的SPU拥有多少个销售属性
export const reqSpuHasSaleAttr = (spuId: number) => {
    return request.get<any, SaleAttrResponseData>(API.SPUHASSALEATTR_URL + spuId)
}
// 获取全部的销售属性
export const reqAllSaleAttr = () => {
    return request.get<any, HasSaleAttrResponseData>(API.ALLSALEATTR_URL)
}
// 添加一个新的SPU
// 更新已有的SPU
// data：即为新增的SPU | 或者已有的SPU对象
export const reqAddOrUpdateSpu = (data: SpuData) => {
    if (data.id) {
        return request.post<any, any>(API.UPDATESPU_URL, data)
    } else {
        return request.post<any, any>(API.ADDSPU_URL, data)
    }
}

export const reqAddSku = (data: SkuData) => {
    return request.post<any, any>(API.ADDSKU_URL, data)
}

export const reqSkuList = (spuId: number | string) => {
    return request.get<any, SkuInfoData>(API.SKUINFO_URL + spuId)
}

export const reqRemoveSpu = (spuId: number | string) => {
    return request.delete<any, any>(API.REMOVESPU_URL + spuId)
}